很難得,有一件事情能持續以恆地堅持一個月(除了變胖這件事以外),最後的分享就來講講本地推播吧:
要執行本地推播,必須跟使用者取得權限,我想要讓App一開始運行的時候就跟使用者要權限,所以我寫在這個開始運行時會呼叫的方法內
首先在Appdelegate.swift
內找到這個方法:func application(_:didFinishLaunchingWithOptions)
,這個方法的定義可以參考官網的開發者文檔說明:
在這個方法內,先實例化一個通知中心,並且向使用者要權限,如果成功,則呼叫sendMyMessage()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert,.sound,.badge]) { (success, error) in
if success
{
self.sendMyMessage()
}else
{
print("在",#function,"發生了錯誤,錯誤訊息為:",error?.localizedDescription)
}
}
return true
}
上述有提到獲取使用者權限成功後會呼叫sendMyMessage()
,現在來實作這個方法的內容,由於我在跟使用者要全限時,我要了文字、聲音、圖示通知這三種權限,所以我在推播的內容也要輸入這些內容:
func sendMyMessage()
{
let content = UNMutableNotificationContent()
content.title = "今天是鐵人賽第三十天"
content.body = "我終於挑戰成功啦!!"
content.badge = 999
content.sound = UNNotificationSound.default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
let request = UNNotificationRequest(identifier: "weakJimmy", content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request)
}
現在只要打開App之後,在trigger
設定的時間內跳到桌面,就會在第十秒的時候跳出通知:
鐵人賽的網站的 code block 有些麻煩,針對下面的程式碼我會改寫
print("在",#function,"發生了錯誤,錯誤訊息為:",error?.localizedDescription)
改寫成
print("在",
#function,
"發生了錯誤,錯誤訊息為:",
error?.localizedDescription)
相對簡單閱讀一點 XD
好的,感謝~好閱讀很多,這個方法我知道,只是常常忘記用...